package com.chenyuxin.ilp.service.file;

import com.chenyuxin.ilp.model.pojo.Result;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface FileService {
    /**
     * 添加文件
     * @param userId     用户id
     * @param parentId 文件夹id
     * @param file       文件
     * @return result
     */
    Result addFile(String userId, Long parentId, MultipartFile file);

    /**
     * 树型查询所有文件及目录
     * @param userId 用户id
     * @return 树型结构
     */
    Result selectFileTree(String userId);

    /**
     * 删除文件
     * @param userId 用户id
     * @param fileId 文件id
     * @return result
     */
    Result deleteFile(String userId, Long fileId);

    /**
     * 批量删除文件
     * @param userId 用户id
     * @param fileIds 文件ids
     * @return result
     */
    Result deleteFileBatch(String userId, List<Long> fileIds);

    /**
     * 根据parentId查询父节点id
     * @param userId 用户id
     * @param folderId 父节点文件夹id
     * @return result
     */
    Result selectFileByParentId(String userId, Long folderId);

    /**
     * 文件预览
     * @param fileId 文件id
     * @param userId 用户id
     * @return 文件预览url
     */
    Result previewFile(Long fileId, String userId);

    /**
     * 修改文件权限
     * @param fileId 文件id
     * @param permission  文件权限 0:不公开 1:公开可预览 2:公开可下载
     * @param userId 用户id
     * @return result
     */
    Result updateFileOpen(Long fileId, Integer permission, String userId);

    /**
     * 下载文件
     * @param userId 用户id
     * @param fileId 文件id
     * @return 返回结果
     */
    ResponseEntity<byte[]> downloadFile(String userId, Long fileId);
}
